# Unlike mlir_float16_utils, mlir_c_runner_utils, etc, we do *not* make
# this a shared library: because doing so causes issues when building
# on Windows.  In particular, various functions take/return `std::vector`
# but that class is not designed with dllimport/dllexport pragma,
# therefore it cannot be safely/correctly used across DLL boundaries.
# Consequently, we avoid using the "mlir_xxx_utils" naming scheme, since
# that is reserved/intended for shared libraries only.
add_mlir_library(MLIRSparseTensorRuntime
  File.cpp
  MapRef.cpp
  Storage.cpp

  EXCLUDE_FROM_LIBMLIR
  )
mlir_target_link_libraries(MLIRSparseTensorRuntime PUBLIC
  MLIRSparseTensorEnums
  mlir_float16_utils
  )
set_property(TARGET MLIRSparseTensorRuntime PROPERTY CXX_STANDARD 17)

check_cxx_compiler_flag(-Wweak-vtables
  COMPILER_SUPPORTS_WARNING_WEAK_VTABLES)
if(COMPILER_SUPPORTS_WARNING_WEAK_VTABLES)
  target_compile_options(MLIRSparseTensorRuntime PUBLIC
    "-Wweak-vtables")
endif()
